package com.qf.xiaomi.web.servlet;

import com.qf.xiaomi.pojo.CartUnion;
import com.qf.xiaomi.pojo.TbGoodsKz;
import com.qf.xiaomi.pojo.User;
import com.qf.xiaomi.service.impl.CartServiceImpl;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

/**
 * 购物车
 * @Created by 马英超 on 2022/8/17 8:14
 * @author： 马英超
 * @version：v1.0
 * @description:
 */
public class CartServlet {


//添加购物车
    protected String  create(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取产品id
        final String productId = req.getParameter("id");
         String productNum=req.getParameter("num");
        final User user =(User)  req.getSession().getAttribute("user");//从session中过去user对象

        if(productNum==null||productNum.length()==0){
            //如果产品数量为空，则默认增加1
            productNum="1";
        }
        if(user==null){
            return "redirect:/login.jsp";
        }

        /*
        *购物车添加需要注意：
        *       1.如果购物车内已经有同一个商品，则购物车内的商品数量需要加上之后添加进去的商品数量
        *       2.购物车内商品的信息应随着产品信息的改变而更新，例如价格（PS：可以保存原价格，用户比价）
        *       3.购物车应和用户绑定，即只有用户登录后才能查看自己的购物车信息，因此需要传一个用户id
        *       4.购物车内，应保存商品的信息+用户信息
         */
        //调用Service进行业务处理
        CartServiceImpl cartService=new CartServiceImpl();
        final boolean dealResult = cartService.dealCart(productId,productNum,user.getId());
        System.out.println(dealResult);
        //如果加入购物车成功，重定向至cartSuccess.jsp
        if(dealResult==true)
            return "redirect:/cartSuccess.jsp";
        return  "redirect:/goodsList.jsp";

    }


    /**
     * 加入购入车后查看看购物车数据-----待改进：数据来源应为tb_cart、tb_goods、tb_goodskz
     * @param req
     * @param resp
     * @return
     * @throws ServletException
     * @throws IOException
     */
    //查看购物车
    protected String show(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取参数
        final String uid = req.getParameter("uid");

        //如果未传uid则跳转到登录页面登录
        if (uid==null||uid==""||uid.length()==0){
            return "redirect:/login.jsp";
        }

        //调用Service根据用户ID查询购物车信息
        CartServiceImpl cartService=new CartServiceImpl();
        List<CartUnion> cart= cartService.queryCart(uid);


        //如果cart不为空，则重定向
        req.getSession().setAttribute("cart",cart);
        System.out.println("user:"+req.getSession().getAttribute("user"));
        if (cart!=null)
            return "redirect:/cart.jsp" ;
        return "redirect:/error/error.jsp" ;
    }

    /**
     * 按照用户、商品删除购物车内商品
     * @param req
     * @param resp
     * @return
     */
    //删除购物车对应的数据
    private String delete(HttpServletRequest req,HttpServletResponse resp){
        //获取产品id
        final String cid = req.getParameter("cid");
        final String uid = req.getParameter("uid");
        if (cid==null||cid.length()==0||uid==null||"0".equals(uid)||uid.length()==0){
            //可以返回消息或返回指定页面，此处返回错误页面
            return "redirect:/error/error.jsp" ;//删除失败
        }

        //调用Service 处理删除
        CartServiceImpl cartService=new CartServiceImpl();
        final int deleteResult = cartService.deleteCart(cid,uid);
        /***********************遗留问题：购物车删除后没有自动刷新**********************/
        if(deleteResult>=1)
            return "redirect:/cart.jsp";
        return "redirect:/error/error.jsp" ;//删除失败
    }

    /**
     * 按照用户清空购物车
     * @param req
     * @param resp
     * @return
     */
    private String  clear(HttpServletRequest req,HttpServletResponse resp) {
        //获取参数
        final int uid = Integer.parseInt(req.getParameter("uid"));
        if (uid==0){
            return "redirect:/error/error.jsp" ;//删除失败
        }
        //调用service
        CartServiceImpl cartService=new CartServiceImpl();
        //按用户清空购物车
        final boolean clearCartRestulr = cartService.clearCart(uid);
        /***********************遗留问题：购物车删除后没有自动刷新**********************/
        if (clearCartRestulr==true){
            //重定向到购物车页面
            return "redirect:/cart.jsp";
        }else{
            return "redirect:/error/error.jsp" ;//删除失败
        }
    }
}
